C1: 1. T : Type
C1: 2. T List
C1: 3. x : T C1: 4. y : T C1: 5. no_repeats(T;[])
C1: 6. adjacent(T;[];x;y)
C1: 7. z : T C1: 8. z before y []
C1: z before x [] (z = x)
C2:
C2: 1. T : Type
C2: 2. T List
C2: 3. u : T C2: 4. v : T List
C2: 5. x, y:T.
C2: 5. no_repeats(T;v) adjacent(T;v;x;y) (z:T. z before yv (z before xv (z = x)))
C2: 6. x : T C2: 7. y : T C2: 8. no_repeats(T;[u / v])
C2: 9. adjacent(T;[u / v];x;y)
C2: 10. z : T C2: 11. z before y [u / v]
C2: z before x [u / v] (z = x)
C.